package com.spring.schooltest.test;

import java.util.LinkedList;

public class FIFO {
	public void F(int[] seq,int pages) {
		int page_break = 0;// 断页次数
		LinkedList<Integer> list = new LinkedList<Integer>();
		for (int i = 0; i < seq.length; i++) {
			if (list.contains(seq[i])) {// 如果即将访问的序列在物理块中，直接跳过
				continue;
			} else {// 如果即将访问的序列不在物理块中，添加到物理块中；如果满了，找到最久不被访问的序列，并删除替换
				if(list.size()!=pages) {
					list.addLast(seq[i]);// 该方法表示将指定的元素追加到此列表的末尾
					page_break++;//访问序列不存在，断页加一
				}else {
					list.removeFirst();// 删除第一个元素
					list.addLast(seq[i]);// 追加最后一个新元素
					page_break++;// 置换，断页加一
				}
			}
		}
		// 输出结果
		System.out.println("断页次数：" + page_break + "\n断页中断率：" + page_break * 1.0 / seq.length);
	}
}

